package com.ruoyi.gd.ywdwgd.utils;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.metadata.Cell;
import com.alibaba.excel.metadata.CellExtra;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.gd.khbjk.domain.bo.ZKhbjkBo;
import com.ruoyi.gd.khbjk.domain.vo.ImportZKhbjkVo;
import com.ruoyi.gd.ywdwgd.domain.vo.ReadExcelVo;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class EasyExcelReadListener extends AnalysisEventListener<ReadExcelVo>{

    private List<ReadExcelVo> readExcelVos = new ArrayList<>();  // 读取后的数据
    private int skipRows; // 要跳过的行数
    private String htdh;  // 合同单号
    String khname = ""; // 客户名称
    String dz = "";  // 地址
    public EasyExcelReadListener(int skipRows) {
        this.skipRows = skipRows;
    }
    @Override
    public void invoke(ReadExcelVo data, AnalysisContext context) {
        try {
            // 获取当前的合同单号
            String ershiba = data.getErshiba();
            if (StringUtils.isNotEmpty(ershiba)) {
                String[] split = ershiba.split("[：:]");
                htdh = split[1];
            }
            // 获取客户名称
            String dyl = data.getXh();
            if (StringUtils.isNotEmpty(dyl) && dyl.contains("委托单位（甲方）")) {
                String[] split = dyl.split("[：:]");
                khname = split[1];
            }
            if (StringUtils.isNotEmpty(dyl) && dyl.contains("地    址")) {
                String[] split = dyl.split("[：:]");
                dz = split[1];
            }
            // 当前行
            Integer rowIndex = context.readRowHolder().getRowIndex();
            if (rowIndex >= skipRows) {
                // 判断序号，仪器名称，型号规格，制造厂，数量，单价，服务方式 都不为空的情况下去添加数据
                if (StringUtils.isNotEmpty(data.getXh()) && StringUtils.isNotEmpty(data.getName())
                    && StringUtils.isNotEmpty(data.getXhgg())
                    && StringUtils.isNotEmpty(data.getNumber()) && StringUtils.isNotEmpty(data.getDj())
                    && StringUtils.isNotEmpty(data.getFwfs()) &&
                    (!"序号".equals(data.getXh()) || !"仪器名称".equals(data.getName()))
                ) {
                    readExcelVos.add(data);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        System.out.println(context);
        System.out.println("数据遍历完毕");
        // 所有数据解析完成后的操作
    }

    @Override
    public void extra(CellExtra extra, AnalysisContext context) {
        System.out.println(extra);
        System.out.println(context);
    }

    public List<ReadExcelVo> getReadExcelList() {
        return readExcelVos;
    }

    public String getHtdh() {
        return htdh;
    }

    public String getKhname() {
        return khname;
    }

    public String getDz() {
        return dz;
    }
}
